package com.csii.pos.ifbtoolspref.service.Impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.csii.pos.ifbtoolspref.IfbToolsPref;
import com.csii.pos.ifbtoolspref.mapper.IfbToolsPrefMapper;
import com.csii.pos.ifbtoolspref.service.IIfbToolsPrefService;
import com.csii.pos.ifbtoolspref.vo.IfbToolsPrefVO;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 投融资工具优先级
 * @Author: power-stdio
 * @Date:   2021-07-06
 * @Version: V1.0
 */
@Service
public class IfbToolsPrefServiceImpl extends ServiceImpl<IfbToolsPrefMapper, IfbToolsPref> implements IIfbToolsPrefService {
    @Resource
    private IfbToolsPrefMapper ifbToolsPrefMapper;
    @Override
    public IPage<IfbToolsPrefVO> page(Page<IfbToolsPref> page,IfbToolsPrefVO ifbToolsPref) {
        IPage<IfbToolsPref> ifbToolsPrefIPage = ifbToolsPrefMapper.page(page,ifbToolsPref);
        //数据转化，将数据库查询的数据转化成vo数据
        IPage<IfbToolsPrefVO> ifbToolsPrefVOIPage = changeVo(ifbToolsPrefIPage);
        return ifbToolsPrefVOIPage;
    }

    @Override
    public int addIfbToolsPref(IfbToolsPrefVO ifbToolsPrefVO) {
        ifbToolsPrefVO.setIfUse("0");
        IfbToolsPref change = change(ifbToolsPrefVO);
        int add = ifbToolsPrefMapper.addIfbToolsPref(change);
        return add;
    }

    @Override
    public int updateIfbToolsPref(IfbToolsPrefVO ifbToolsPrefVO) {
        IfbToolsPref change = change(ifbToolsPrefVO);
        int upd = ifbToolsPrefMapper.updateIfbToolsPref(change);
        return upd;

    }

    @Override
    public int deleteIfbToolsPref(String ifbToolType,String type) {
        int del = ifbToolsPrefMapper.deleteIfbToolsPref(ifbToolType,type);
        return del;
    }
    /**
     * @description: 将ifbToolsPref转化为IfbToolsPrefVO
     * @author liuzhonghua
     * @date
     * @version 1.0
     */
    private IPage<IfbToolsPrefVO> changeVo(IPage<IfbToolsPref> ifbToolsPref){
        //创建返回的page
        IPage<IfbToolsPrefVO> iPage = new Page<>();
        List<IfbToolsPrefVO> ifbToolsPrefVOS = new ArrayList<>();
        //循环，进行数据转化
        for (IfbToolsPref record : ifbToolsPref.getRecords()) {
            //接收转化后的数据
            IfbToolsPrefVO ifbToolsPrefVO = new IfbToolsPrefVO();
            //2为投资，为投资时的数据转化
            if ("2".equals(record.getType())){
                ifbToolsPrefVO.setPref(record.getInvPref());
                ifbToolsPrefVO.setScaleCtrl(record.getIvnScaleCtrl());
                ifbToolsPrefVO.setScaleLa(record.getIvnScaleLa());
                //1为融资，融资时的数据转化
            }else if ("1".equals(record.getType())){
                ifbToolsPrefVO.setPref(record.getFnnPref());
                ifbToolsPrefVO.setScaleCtrl(record.getFnnScaleCtrl());
                ifbToolsPrefVO.setScaleLa(record.getFnnScaleLa());
            }
            //投、融资共有数据转化
            ifbToolsPrefVO.setIfUse(record.getIfUse());
            ifbToolsPrefVO.setType(record.getType());
            ifbToolsPrefVO.setIfbToolType(record.getIfbToolType());
            ifbToolsPrefVOS.add(ifbToolsPrefVO);

        }
        //list不能直接add，所以用set加入数据
        iPage.setRecords(ifbToolsPrefVOS);
        iPage.setTotal(ifbToolsPref.getTotal());
        iPage.setCurrent(ifbToolsPref.getCurrent());
        iPage.setPages(ifbToolsPref.getPages());
        iPage.setSize(ifbToolsPref.getSize());
        return iPage;
    }
    private IfbToolsPref change(IfbToolsPrefVO ifbToolsPrefVO){
        //创建返回的类
        IfbToolsPref ifbToolsPref = new IfbToolsPref();
        //2为投资，投资时的数据转化
        if("2".equals(ifbToolsPrefVO.getType())){
            ifbToolsPref.setInvPref(ifbToolsPrefVO.getPref());
            ifbToolsPref.setIvnScaleCtrl(ifbToolsPrefVO.getScaleCtrl());
            ifbToolsPref.setIvnScaleLa(ifbToolsPrefVO.getScaleLa());
            ifbToolsPref.setFnnPref("0");
            ifbToolsPref.setFnnScaleCtrl("0");
            ifbToolsPref.setFnnScaleLa(0.0);
            //1为融资，融资的数据转化
        }else if("1".equals(ifbToolsPrefVO.getType())){
            ifbToolsPref.setFnnPref(ifbToolsPrefVO.getPref());
            ifbToolsPref.setFnnScaleCtrl(ifbToolsPrefVO.getScaleCtrl());
            ifbToolsPref.setFnnScaleLa(ifbToolsPrefVO.getScaleLa());
            ifbToolsPref.setInvPref("0");
            ifbToolsPref.setIvnScaleCtrl("0");
            ifbToolsPref.setIvnScaleLa(0.0);
        }
        //投/融资共有数据转化
        ifbToolsPref.setIfbToolType(ifbToolsPrefVO.getIfbToolType());
        ifbToolsPref.setIfUse(ifbToolsPrefVO.getIfUse());
        ifbToolsPref.setType(ifbToolsPrefVO.getType());
        return ifbToolsPref;
    }
}
